package com.shujia.day10;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Objects;

public class Demo05Map {
    public static void main(String[] args) {
        /*
            TODO 使用自定义对象进行保存
                1.对象作为Value
                2.对象作为Key,其他作为Value
         */
        HashMap<Key, String> hashMap = new HashMap<>();
        hashMap.put(new Key("object1"),"1");
        hashMap.put(new Key("object2"),"2");
        hashMap.put(new Key("object3"),"3");
        hashMap.put(new Key("object3"),"3");
        System.out.println(hashMap);
        /*
            TODO 当提供的信息数据一样时，要求HashMap能判断出 其为一个对象
         */

        // TODO LinkedHashMap由于底层使用了 链表加上Hash表结构，使得其具有按添加数据时的顺序保存数据
        LinkedHashMap<Integer, String> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put(1,"one");
        linkedHashMap.put(3,"three");
        linkedHashMap.put(2,"two");
        System.out.println(linkedHashMap);


    }
}
class Key{
    String value;

    public Key(String value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return "Key{" +
                "value='" + value + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Key key = (Key) o;
        return Objects.equals(value, key.value);
    }

    @Override
    public int hashCode() {
        return Objects.hash(value);
    }
}
